var InterValObj; //timer变量，控制时间
var count = 60; //间隔函数，1秒执行
var curCount;//当前剩余秒数
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */

var MobileValidationUrl = "http://119.28.27.242:8080/chuangzhixing/MobileValidation";
var RegisterUrl = "http://127.0.0.1:8085/register";
var CenterUrl = "http://127.0.0.1:8085/center";
var LoginUrl = "http://127.0.0.1:8085/login";
 
function hex_sha1(s) {
    return binb2hex(core_sha1(AlignSHA1(s)));
}
function core_sha1(blockArray) {
    var x = blockArray; // append padding
    var w = new Array(80);
    var a = 1732584193;
    var b = -271733879;
    var c = -1732584194;
    var d = 271733878;
    var e = -1009589776;
    for (var i = 0; i < x.length; i += 16) // 每次处理512位 16*32
    {
        var olda = a;
        var oldb = b;
        var oldc = c;
        var oldd = d;
        var olde = e;
        for (var j = 0; j < 80; j++) // 对每个512位进行80步操作
        {
            if (j < 16)
                w[j] = x[i + j];
            else
                w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
            var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j)));
            e = d;
            d = c;
            c = rol(b, 30);
            b = a;
            a = t;
        }
        a = safe_add(a, olda);
        b = safe_add(b, oldb);
        c = safe_add(c, oldc);
        d = safe_add(d, oldd);
        e = safe_add(e, olde);
    }
    return [a, b, c, d, e];
}
function sha1_ft(t, b, c, d) {
    if (t < 20)
        return (b & c) | ((~b) & d);
    if (t < 40)
        return b ^ c ^ d;
    if (t < 60)
        return (b & c) | (b & d) | (c & d);
    return b ^ c ^ d; // t<80
}
function sha1_kt(t) {
    return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514;
}
function safe_add(x, y) {
    var lsw = (x & 0xFFFF) + (y & 0xFFFF);
    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
    return (msw << 16) | (lsw & 0xFFFF);
}
function rol(num, cnt) {
    return (num << cnt) | (num >>> (32 - cnt));
}
function AlignSHA1(str) {
    var nblk = ((str.length + 8) >> 6) + 1,
        blks = new Array(nblk * 16);
    for (var i = 0; i < nblk * 16; i++)
        blks[i] = 0;
    for (i = 0; i < str.length; i++)
        blks[i >> 2] |= str.charCodeAt(i) << (24 - (i & 3) * 8);
    blks[i >> 2] |= 0x80 << (24 - (i & 3) * 8);
    blks[nblk * 16 - 1] = str.length * 8;
    return blks;

}
function binb2hex(binarray) {
    var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
    var str = "";
    for (var i = 0; i < binarray.length * 4; i++) {
        str += hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8 + 4)) & 0xF) +
            hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8)) & 0xF);
    }
    return str;
}
function sendMessage() {
    //获取输入的手机号码
    var inputText = document.getElementById('phoneNumber');
    var captcha=document.getElementById('lc-captcha-response')
    var phoneNumber = inputText.value;
    var luotest_response=captcha.value;
    var warningText1=document.getElementById('warningText1');
    if (checkPhoneNumber(phoneNumber)) {
        //向后台发送处理数据
        if(luotest_response!=""){
            $.ajax({
                traditional: true,
                type: "POST", //用POST方式传输
                url: MobileValidationUrl,
                data: {"phoneNumber": phoneNumber,
                       "luotest_response":luotest_response
                }
            });
            curCount = count;
        　　//设置button效果，开始计时
            $("#btnSendCode").attr("disabled", "true");
            $("#btnSendCode").val(curCount + "秒后重新发送");
            InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器，1秒执行一次
        }
        else{
            warningText1.innerText = "请先进行人机交互";
            warningText1.style.display = "block";
        }
    }
}

//验证手机号码
function checkPhoneNumber(phoneNumber) {
    var pattern = /^1[34578]\d{9}$/;
    if (pattern.test(phoneNumber)) {
        return true;
    }
    return false;
}

//timer处理函数
function SetRemainTime() {
    if (curCount == 0) {                
        window.clearInterval(InterValObj);//停止计时器
        $("#btnSendCode").removeAttr("disabled");//启用按钮
        $("#btnSendCode").val("重新发送验证码");
    }
    else {
        curCount--;
        $("#btnSendCode").val(curCount + "秒后重新发送");
    }
}

function shaMessage(){
    var phoneNumber = document.getElementById('phoneNumber').value;
    var verifyCode = document.getElementById('verifyCode').value;
    var passwd = hex_sha1(document.getElementById('passwd').value);
    var nickName = encodeURIComponent(document.getElementById('nickName').value);
    var timestamp = Date.parse(new Date());
    var obj = {'phoneNumber':phoneNumber,'verifyCode':verifyCode,
     'passwd':passwd,'nickName':nickName,'timestamp':timestamp};
    var a = [];
    var string="";
    $.each(obj, function(key, val) { a[a.length] = key;  });
    a.sort();
    $.each(a, function(i, key){
        string=string+obj[key];
        console.log(key+obj[key]);
    });
    var sha1_result=hex_sha1(string);

    $.ajax({
        traditional: true,
        type: "POST", //用POST方式传输
        url: RegisterUrl,
        data: {"phoneNumber":phoneNumber,
              "verifyCode":verifyCode,
              "password":passwd,
              "nickName":nickName,
            "timestamp": timestamp,
            "sha1_result": sha1_result
        },
        success: function (result) {
            console.log(result);
            if (result.code == 1) {
                window.location.href=CenterUrl;
            }
            else {
                alert(result.msg);
            }
        },
        datatype: "json"
    });
}

function login() {
    var phoneNumber = document.getElementById('phoneNumber').value;
    var passwd = hex_sha1(document.getElementById('passwd').value);
    var timestamp = Date.parse(new Date());

    var obj = {'phoneNumber':phoneNumber, 'passwd':passwd,'timestamp':timestamp};
    var a = [];
    var string="";
    $.each(obj, function(key, val) { a[a.length] = key;  });
    a.sort();
    // $.each(a, function(i, key) {
    //   window.alert("key = " + key+",val="+obj[key]); // 访问JSON对象属性
    // });
    $.each(a, function(i, key){
        string=string+obj[key];
        console.log(key+obj[key]);
    });
    var sha1_result=hex_sha1(string);

    // 获取网址中ref参数的值，如果有，登录完成后就跳转过去
    var nextUrl = getUrlParam("ref");
    if (nextUrl == null) {
        nextUrl = CenterUrl;
    }

    $.ajax({
        traditional: true,
        type: "POST", //用POST方式传输
        url: LoginUrl,
        data: {"phoneNumber":phoneNumber,
            "password":passwd,
            "timestamp": timestamp,
            "sha1_result": sha1_result
        },
        success: function (result) {
            console.log(result);
            if (result.code == 1) {
                // alert("login success");
                window.location.href=nextUrl;
            }
            else {
                alert(result.msg);
            }
        },
        datatype: "json"
    });
}

//获取url中的参数
function getUrlParam(name) {
    //构造一个含有目标参数的正则表达式对象
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    //匹配目标参数
    var r = window.location.search.substr(1).match(reg);
//返回参数值
    if (r != null) return unescape(r[2]); return null;
}